<?php

/**
 * 日志管理
 * @author 耿鸿飞<eoe2005@qq.com>
 */
class G_Log {

    protected static $_log;

    public static function init($path = null) {
        if (!isset(self::$_log)) {
            include G_ROOT . 'Log' . DS . 'G_FileLog.cls.php';
            if ($path) {
                self::$_log = new G_FileLog($path);
            } else {
                trigger_error('日志文件参数错误');
                die();
            }
        }
        return self::$_log;
    }

}

abstract class GC_Log {

    const LOG = 1;
    CONST DEBUG = 2;
    CONST ERROR = 3;
    CONST SQL = 4;

    /**
     * 写入任意文件日志
     * @param type $file
     */
    public function w($file) {
        if (func_num_args() > 1) {
            $params = func_get_args();
            unset($params[0]);
            $this->_write($params, $file);
        }
    }

    /**
     * 记录日志文件
     */
    public function log() {
        if (func_num_args() > 0) {
            $params = func_get_args();
            $this->_write($params, self::LOG);
        }
    }

    /**
     * 记录调试信息
     */
    public function debug() {
        if (func_num_args() > 0) {
            $params = func_get_args();
            $this->_write($params, self::DEBUG);
        }
    }

    /**
     * 记录错入信息
     */
    public function err() {
        if (func_num_args() > 0) {
            $params = func_get_args();
            $this->_write($params, self::ERROR);
        }
    }

    /**
     * 记录Sql日志
     */
    public function sql() {
        if (func_num_args() > 0) {
            $params = func_get_args();
            $this->_write($params, self::SQL);
        }
    }

    /**
     * 写数据到日志中
     */
    public abstract function _write($data, $type = self::LOG);
}

?>
